﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CestoDoBebe.DAO;
using System.Drawing;
using System.IO;
using System.Net.Mail;
using System.Net;

namespace CestodoBebe
{
    public partial class CadastroCliente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
            
                Estado objEstado = new Estado();

                List<Estado> ListaEstado = new List<Estado>();

                ListaEstado = objEstado.ListarEstados();

                ddlEstado.DataTextField = "SGLESTADO";
                ddlEstado.DataValueField = "CODESTADO";
                ddlEstado.DataSource = ListaEstado;
                ddlEstado.DataBind();

                ddlEstado.Items.Insert(0, "");

                Session["cod_usuario"] = "";
                if (Session["cod_usuario"].ToString() != "")
                {

                    Session.Add("ALTERACAO", "ALT");

                    

                    if (Session["ALTERACAO"].ToString() == "ALT")
                    {
                        //imgPerfil.Visible = true;
                        Usuario objUsuario = new Usuario();
                        //objUsuario = objUsuario.CarregaDadosUsuario(Convert.ToInt32(Session["cod_usuario"]));

                        txtSenha.Enabled = false;
                        txtConfirmaSenha.Enabled = false;
                        btnAlterarSenha.Visible = true;

                        txtNome.Text = objUsuario.NmeUsuario;
                        txtEmail.Text = objUsuario.NmeEmail;
                        txtLbtSenha.Text = objUsuario.dscLembreteSenha;
                        txtSenha.Text = "123";//objUsuario.NmeSenha;
                        ddlEstado.SelectedValue = objUsuario.Endereco.SglUf;
                        //ddlCidade.SelectedValue = objUsuario.Endereco.NmeCidade;
                        



                    }
                }

                //Adiciona item 0 com opção em branco no combo
                ddlCidade.Items.Insert(0, "");
            }
        }


        protected void btnConfirmar_click(object sender, EventArgs e)
        {

            Page.Validate();

            if (Page.IsValid)
            {
                //string nmeArquivo = "";
                //if (asFlpImagemPerfil.HasFile)
                //{

                //apagar os arquivos já utilizados
                //string[] filePaths = Directory.GetFiles(Server.MapPath("imgUp/"));
                //foreach (string filePath in filePaths)
                //{
                //    string arquivo = filePath.Substring(filePath.LastIndexOf("\\") + 1, (filePath.Length) - (filePath.LastIndexOf("\\") + 1));

                //    //verifica se não é o arquivo do usuário e se o arquivo está a mais de 30 minutos no diretório
                //    if ((DateTime.Now.Subtract(File.GetCreationTime(filePath)).Minutes > 30) &&
                //        (arquivo != imgPerfil.ImageUrl.Replace("imgUp/", "").ToString()))
                //        File.Delete(filePath);
                //}
                

                //    int numeroImagem;
                //    Random rd = new Random(1);
                //    numeroImagem = rd.Next();

                //    imgPerfil.ImageUrl = asFlpImagemPerfil.FileName;
                //    nmeArquivo = numeroImagem + asFlpImagemPerfil.FileName.ToString();

                //    asFlpImagemPerfil.SaveAs(Server.MapPath("imgUp/" + nmeArquivo));

                //    //FileInfo a = new FileInfo((Server.MapPath("imgUp/A*.*")));

                //    //a.Delete();


                //    RedimensionarImagem(nmeArquivo);

                //    //FileInfo a = new FileInfo((Server.MapPath("imgUp/" + nmeArquivo)));



                //    //imgPerfil.ImageUrl = "~/imgUp/" + nmeArquivo;

                //    //imgPerfil.ImageUrl = "imgUp/teste.png";
                //    imgPerfil.ImageUrl = "imgUp/" + "A" + nmeArquivo;
                //}
                Usuario objUsuario = new Usuario();

                objUsuario.codTipoUsuario = 1;
                objUsuario.NmeUsuario = PrimeiraMaiusculaTodasPalavras(txtNome.Text);
                objUsuario.NmeLogin = "";
                objUsuario.NmeEmail = txtEmail.Text;
                objUsuario.NmeSenha = txtSenha.Text;
                objUsuario.dscLembreteSenha = txtLbtSenha.Text;
                objUsuario.FlgAtivo = 0;
                objUsuario.Endereco.NmeCidade = ddlCidade.Items[ddlCidade.SelectedIndex].Text;
                objUsuario.Endereco.SglUf = ddlEstado.Items[ddlEstado.SelectedIndex].Text;



                ////if (asFlpImagemPerfil.HasFile)
                //if (imgPerfil.ImageUrl.ToString() != "" && imgPerfil.ImageUrl.ToString() != "~/images/ImagemPerfil.jpg")
                //    objUsuario.imgPerfil = CarregarArquivoImagem( imgPerfil.ImageUrl.Replace("imgUp/","").ToString() , Server.MapPath("imgUp/"), 120000);
                //else
                objUsuario.imgPerfil = null;

                if (Session["login"] != null)
                {
                    if (Session["login"].ToString() != "")
                    {
                        //alteração
                        objUsuario.FlgAtivo = 1;
                        if (objUsuario.AtualizaCadastro(ref objUsuario))
                        {
                            Response.Redirect("PaginaMensagem.aspx?mensagem=Dados atualizados com sucesso....");
                        }
                    }
                }
                else
                    if (objUsuario.IncluirUsuario(ref objUsuario))
                    {
                        //EnviarEmail("humoata@gmail.com");
                        EnviarEmail("humoata@gmail.com", objUsuario.CodUsuario);
                        Response.Redirect("PaginaMensagem.aspx?mensagem=Cadastro realizado com sucesso....&email=" + txtEmail.Text);
                        LimparDados();

                    }
            }

        }

        public void RedimensionarImagem(string NomeArquivo)
        {
            System.Drawing.Image imagem;
            System.Drawing.Image thumb;

            //Recupera a imagem original
            imagem = System.Drawing.Image.FromFile(Server.MapPath("imgUp/" + NomeArquivo));


            /////Verifica se o tamanho é maior que 130kb ou o width em px da imagem é maior que 300
            //if (FileUpload1.PostedFile.ContentLength > (130 * 1024) || imagem.Size.Width > 300)
            //{
            //Aqui é feita a renderização proporcional da altura da imagem
            //tomando por base que o largura final dela é de 50px;
            int width = 108;
            int height;
            height = (int)(width * imagem.Height) / imagem.Width;
            height = 129;

            //Gera a nova imagem reduzida
            thumb = imagem.GetThumbnailImage(width, height, null, System.IntPtr.Zero);

            //Salva a imagem
            thumb.Save(Server.MapPath("imgUp/" + "A" + NomeArquivo));
            //}


        }


        byte[] CarregarArquivoImagem(string nomeArquivo, string caminhoArquivo, int ImagemTamanhoMaximo)
        {
            try
            {
                byte[] imagemBytes = null;
                string caminhoCompletoImagem = caminhoArquivo + "\\" + nomeArquivo;
                FileStream fs = new FileStream(caminhoCompletoImagem, FileMode.Open, FileAccess.Read);
                BinaryReader br = new BinaryReader(fs);
                imagemBytes = br.ReadBytes(ImagemTamanhoMaximo);
                return imagemBytes;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        protected void ctvEmail_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = false;
            Usuario objUsuario = new Usuario();

            if (Session["login"].ToString() != "")
            {
                //alteração
                args.IsValid = !objUsuario.ValidaDisponibilidadeEmailAlteracao(txtEmail.Text, Session["login"].ToString());
            }
            else
            {
                
                args.IsValid = !objUsuario.ValidaDisponibilidadeEmail(txtEmail.Text);
            }
        }

        protected void txtEmail_TextChanged(object sender, EventArgs e)
        {

        }

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlEstado.SelectedValue != "")
            {
                Cidade objCidade = new Cidade();

                List<Cidade> ListaCidade = new List<Cidade>();

                ListaCidade = objCidade.ListarCidades(Convert.ToInt32(ddlEstado.SelectedValue));

                ddlCidade.DataTextField = "NMECIDADE";
                ddlCidade.DataValueField = "CODCIDADE";
                ddlCidade.DataSource = ListaCidade;
                ddlCidade.DataBind();
            }
            else
                ddlCidade.Items.Clear();

            ddlCidade.Items.Insert(0, "");
        }

        protected void btnSalvarImagem_Click(object sender, EventArgs e)
        {
            //imgPerfil.ImageUrl = "imgUp/" + "teste.png";
            //string nmeArquivo = "";

            //if (asFlpImagemPerfil.HasFile)
            //{
            //    string[] filePaths = Directory.GetFiles(Server.MapPath("imgUp/"));
            //    foreach (string filePath in filePaths)
            //        File.Delete(filePath);


            //    int numeroImagem;
            //    Random rd = new Random(1);
            //    numeroImagem = rd.Next();

            //    imgPerfil.ImageUrl = asFlpImagemPerfil.FileName;
            //    nmeArquivo = numeroImagem + asFlpImagemPerfil.FileName.ToString();

            //    asFlpImagemPerfil.SaveAs(Server.MapPath("imgUp/" + nmeArquivo));

            //    //FileInfo a = new FileInfo((Server.MapPath("imgUp/A*.*")));

            //    //a.Delete();


            //    RedimensionarImagem(nmeArquivo);

            //    //FileInfo a = new FileInfo((Server.MapPath("imgUp/" + nmeArquivo)));



            //    //imgPerfil.ImageUrl = "~/imgUp/" + nmeArquivo;

            //    //imgPerfil.ImageUrl = "imgUp/teste.png";
            //    imgPerfil.ImageUrl = "imgUp/" + "A" + nmeArquivo;
            //}



        }

        public void LimparDados()
        {
            //asFlpImagemPerfil.ClearAllFilesFromPersistedStore();
            txtNome.Text = String.Empty;
            txtEmail.Text = String.Empty;
            txtSenha.Text = String.Empty;
            txtConfirmaSenha.Text = String.Empty;
            txtLbtSenha.Text = String.Empty;
            ddlCidade.SelectedIndex = 0;
            ddlEstado.SelectedIndex = 0;
        }

        public void ValidaEmail(object source, ServerValidateEventArgs args)
        {
            Usuario objUsuario = new Usuario();
            args.IsValid = !objUsuario.ValidaDisponibilidadeEmail(txtEmail.Text);

        }



        public void EnviarEmail(string email, int codUsuario)
        {

            string remetenteEmail = "administracao@cestodobebe.com.br"; //O e-mail do remetente
            MailMessage mail = new MailMessage();
        

            mail.To.Add(email);
            mail.From = new MailAddress(remetenteEmail, "Cesto do Bebê", System.Text.Encoding.UTF8);
            mail.Subject = "Confirmação de cadastro Cesto do Bebê";
            mail.SubjectEncoding = System.Text.Encoding.UTF8;
            mail.Body = "<htmlt>Obrigado por se cadastrar em nosso site, agora só falta mais um passo. Clique no link abaixo e confirme seu cadastro.</br></br><html/>" +
            "http://www.cestodobebe.com.br/confirmacadastro.aspx?codusuario=" + codUsuario.ToString();
                
            mail.BodyEncoding = System.Text.Encoding.UTF8;
            mail.IsBodyHtml = true;
            mail.Priority = MailPriority.High; //Prioridade do E-Mail

            SmtpClient client = new SmtpClient();  //Adicionando as credenciais do seu e-mail e senha:

            client.Credentials = new System.Net.NetworkCredential(remetenteEmail, "administracao20");
            client.Port = 80; // Esta porta é a utilizada pelo Gmail para envio
            client.Host = "smtpout.asia.secureserver.net";//"smtp.gmail.com"; //Definindo o provedor que irá disparar o e-mail
            //client.EnableSsl = true; //Gmail trabalha com Server Secured Layer

            try
            {
                client.Send(mail);
            }

            catch (Exception ex)
            {
                string erro = ex.InnerException.ToString();
            }
        }

        public static string PrimeiraMaiusculaTodasPalavras(String strString)
        {
            string strResult = "";
            bool booPrimeira = true;

            if (strString.Length > 0)
            {
                for (int intCont = 0; intCont <= strString.Length - 1; intCont++)
                {
                    if ((booPrimeira) && (!strString.Substring(intCont, 1).Equals(" ")))
                    {
                        strResult += strString.Substring(intCont, 1).ToUpper();
                        booPrimeira = false;

                    }
                    else
                    {
                        strResult += strString.Substring(intCont, 1).ToLower();

                        if (strString.Substring(intCont, 1).Equals(" "))
                        {
                            booPrimeira = true;
                        }
                    }
                }
            }
            return strResult;
        }

        protected void btnAlterarSenha_Click(object sender, EventArgs e)
        {
            txtSenha.Enabled = true;
            txtConfirmaSenha.Enabled = true;
        }

    }
    
}

